﻿using Sport_Orders.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml.Schema;

namespace Sport_Orders.Program.Module_Windows
{
    /// <summary>
    /// Логика взаимодействия для Busket.xaml
    /// </summary>
    public partial class Busket : Window
    {
        // Генерация списока полученных товаров
        List<Tovar> getTovars = new List<Tovar>();

        public Busket(List<Tovar> tovars)
        {
            InitializeComponent();
            
            // Передача списка выбранных товаров
            getTovars = tovars;

            // Заполенение DataGrid товарами
            DgTovarsForPackageOrder.ItemsSource = getTovars;

            // Заполнение ComboBox адресами
            foreach (var address in Entities.GetContext().Station)
                CbxStation.Items.Add(address);

            // Передача данных в метки
            LbAllPriceWithDiscount.Content = $"Итоговая цена: {getTovars.Sum(tovar => tovar.totalPrice)} руб.";
            LbDiscount.Content = $"Скидка: {getTovars.Sum(tovar => tovar.price) - getTovars.Sum(tovar => tovar.totalPrice)} руб.";

            // Включение кнопки, если присутствует итоговая цена
            if (LbAllPriceWithDiscount.Content.ToString().Contains("Итоговая цена: 0")) BtnPackageOrder.IsEnabled = false;
            else BtnPackageOrder.IsEnabled = true;
        }

        // Оформление заказа
        private void BtnPackageOrder_Click(object sender, RoutedEventArgs e)
        {
            if (CbxStation.SelectedIndex != -1)
            {
                // Передача данных в таблицу заказа
                Orders order = new Orders();
                Entities.GetContext().Orders.Add(order);
                order.ID_station = (CbxStation.SelectedItem as Station).ID_station;
                order.statusOrd = "Новый";
                order.dateOrd = DateTime.Now;
                order.countOrd = 1;
                Entities.GetContext().SaveChanges();

                // Передача данных в 3-ю связующую таблица
                foreach (Tovar tovar in getTovars)
                {
                    TovarsToOrder tovarOrd = new TovarsToOrder();
                    Entities.GetContext().TovarsToOrder.Add(tovarOrd);
                    tovarOrd.ID_tovar = tovar.ID_tovar;
                    tovarOrd.ID_order = order.ID_order;
                    Entities.GetContext().SaveChanges();
                }

                MessageBox.Show("Заказ оформлен!", "Успех", MessageBoxButton.OK,
                                MessageBoxImage.Information);

                Cheque openCheque = new Cheque(getTovars, order);
                openCheque.ShowDialog();
            }
            else MessageBox.Show("Выберите пункт доставки!", "Ошибка", 
                                 MessageBoxButton.OK, MessageBoxImage.Error);
        }

        // Удаление товара из заказа
        private void BtnTempDelete_Click(object sender, RoutedEventArgs e)
        {
            // Спрашиваем
            MessageBoxResult rezult = MessageBox.Show("Вы уверены?", "Удаление", 
                                                      MessageBoxButton.YesNo, MessageBoxImage.Question);
            
            // Проверяем
            if (rezult == MessageBoxResult.Yes)
            {
                // Удаление товара из списка
                Tovar deleteTovar = DgTovarsForPackageOrder.SelectedItem as Tovar;
                getTovars.Remove(deleteTovar);

                // Обновление DataGrid
                DgTovarsForPackageOrder.ItemsSource = null;
                DgTovarsForPackageOrder.ItemsSource = getTovars;

                // Обновление меток
                LbAllPriceWithDiscount.Content = $"Итоговая цена: {getTovars.Sum(tovar => tovar.totalPrice)} руб.";
                LbDiscount.Content = $"Скидка: {getTovars.Sum(tovar => tovar.price) - getTovars.Sum(tovar => tovar.totalPrice)} руб.";

                // Если присутствует итоговая цена, то включить кнопку
                if (LbAllPriceWithDiscount.Content.ToString().Contains("Итоговая цена: 0")) BtnPackageOrder.IsEnabled = false;
                else BtnPackageOrder.IsEnabled = true;
            }
        }
    }
}
